package cn.fj.xiaowei.main.service.website.info.controller;

import cn.fj.xiaowei.main.common.response.vo.RespResult;
import cn.fj.xiaowei.main.service.website.info.po.WebsiteInfoPo;
import cn.fj.xiaowei.main.service.website.info.service.WebsiteInfoService;
import jakarta.websocket.server.PathParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 * 网站信息表 前端控制器
 * </p>
 *
 * @author xiaowei
 * @since 2024-05-05 16:26:05
 */
@RestController
@RequestMapping("/website-info")
public class WebsiteInfoController {

    @Autowired
    private WebsiteInfoService websiteInfoService;

    /**
     * 根据网站信息项名称获取相应的网站信息
     *
     * @param name 网站信息项名称
     * @return 包含网站信息项名称对应的网站信息的响应对象，如果响应对象中的数据字段为 null，
     * 则表示没有找到对应的网站信息
     */
    @GetMapping
    public RespResult<WebsiteInfoPo> get(@PathParam("name") String name) {
        WebsiteInfoPo websiteInfoPo = websiteInfoService.findByName(name);
        return RespResult.success(websiteInfoPo);
    }

    /**
     * 根据网站信息项名称更新指定的网站信息，如果要更新的网站信息不存在，则会将要更新的网站信息作为
     * 一条新记录向数据库中插入
     *
     * @param name 网站信息项名称
     * @param info 网站信息
     * @return 本次更新网站信息项操作是否成功的响应对象，使用响应对象的 status 字段进行记录，
     * true - 成功；false - 失败
     */
    @PutMapping
    public RespResult<Object> put(
            @PathParam("name") String name,
            @PathParam("info") String info
    ) {
        boolean res = websiteInfoService.updateByName(name, info);
        return res ? RespResult.success("网站信息项 %s 更新成功".formatted(name))
                : RespResult.fail("网站信息项 %s 更新失败".formatted(name));
    }

}
